home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 5 / FILL.SHW next >
Text File  |  1992-07-19  |  2KB  |  92 lines

  1. OKAY, HERE'S THE PARTIAL LISTING TO GET YOU ON YOUR WAY, ALEXEI.
  2. YOU'LL NEED APPMAKER 1.6 TO IMPLEMENT THE SetDText COMMANDS, BUT YOU
  3. MAY RECODE BY USING SetDItem AND LOOKING UP IN INS.MAC. ON HOW IT'S USED.
  4. (I ALREADY KNOW YOU KNOW HOW.)
  5.  
  6. FOR THOSE OF YOU NEW TO MAC DEV LAND, YOU'LL NEED SOME MORE INPUT, LIKE WHAT THE DIALOG BOX FUNCTION WOULD LOOK LIKE, OR HOW IT'S PUT TOGETHER IN RESEDIT.
  7. ----
  8. #define NILSHORT 0
  9. #define FILLPICT 3 //THIS IS THE ID OF THE COLOR PICT FILE SHOWING THE
  10. //STANDARD LAVENDAR SYSTEM 7 TUBE
  11. #define FILLLABEL 4 //THIS IS THE ID OF THE STATIC TEXT FOR THE MSG
  12. #define FILLDIALOG SuperDialog
  13.  
  14. #define QuitButton        1 
  15. #define FillButton        2 
  16. #define Picture3        3 
  17. #define FillingThisTubeLabel    4 
  18.  
  19. //GLOBALS...
  20. DialogPtr SuperDialog;
  21. short righty_1=0,lefty_1=0,x_1=0;
  22. Rect itemRect;
  23. //THE FUNCTIONS BELOW ASSUME YOU HAVE A FUNCTION TO GET THE DIALOG BOX ON THE SCREEN.
  24.  
  25. pascal void UpdateFillTube (register short increment)
  26. { //THIS IS THE FUNCTION THAT DOES IT ALL
  27.     DialogPtr theDialog=FILLDIALOG;
  28.     PenState savePen;
  29. #pragma unused (theDialog)
  30.     GetPenState (&savePen);
  31.     PenNormal(); //SETS BLACK PEN
  32.     //TO CHOOSE COLOR PEN, FOLLOW WITH ForeColor(x), WHERE x IS:
  33.     //BLACK=33
  34.     //WHITE=30
  35.     //RED=205
  36.     //GREEN=341
  37.     //BLUE=409
  38.     //CYAN=273
  39.     //MAGENTA=137
  40.     //YELLOW=69
  41.     if (lefty_1==NILSHORT) {
  42.         itemRect = GetDRect (FILLPICT);
  43.         righty_1=itemRect.right;
  44.         lefty_1=itemRect.left;
  45.         x_1=lefty_1;
  46.     }
  47.     itemRect.right=x_1;
  48.     x_1+=increment;
  49.     PaintRect (&itemRect);
  50.     SetPenState (&savePen);
  51.     if (x_1>righty_1) lefty_1=NILSHORT;
  52.  
  53. pascal void FinishFillTube (void) //FOR WHEN YOUR DONE FASTER THAN THE TUBE IS
  54. {
  55.     DialogPtr theDialog=FILLDIALOG;
  56.     PenState savePen;
  57. #pragma unused (theDialog)
  58.     GetPenState (&savePen);
  59.     PenNormal();
  60.     //FOR COLOR, DO, AS TOLD ABOVE, HERE
  61.     itemRect = GetDRect (FILLPICT);
  62.     PaintRect (&itemRect);
  63.     SetPenState (&savePen);
  64.     lefty_1=NILSHORT;
  65.     SysBeep(30);
  66.  
  67.  
  68. static void WipeFillTube (void) //ERASES FILL TUBE WHEN DONE
  69. {
  70.     HideWindow(FILLDIALOG); //SOMEONE ELSE MAY THINK UP A FASTER WAY...
  71.     ShowWindow(FILLDIALOG);
  72.     lefty_1=NILSHORT;
  73.  
  74. static void TellFillTube(char *p) //PUTS MSG IN TEXT ITEM
  75. {
  76.     Str255 b;
  77.     register short x;
  78.     for (x=0;x<=255;b[x]=p[x],++x);
  79.     CtoPstr(b);
  80.     SetDText(FILLLABEL,b);
  81. }
  82.  
  83. static void DoFillButton (void) //UPON FILL BUTTON PUSH, EXECUTES THE ABOVE
  84. {
  85.     TellFillTube("Updating╔");
  86.     UpdateFillTube(4);
  87.     FinishFillTube();
  88.     WipeFillTube();